/*
 * @Author: dailuyu
 * @Date: 2021-08-17 20:30:41
 * @Email: dly@hyrctec.com
 * @LastEditors: dailuyu
 * @LastEditTime: 2021-08-25 14:16:07
 * @Company: hyrc
 * @FilePath: \TaskErrorManage\server\app.js
 * @Description:
 */
var createError = require("http-errors"); // 处理错误（框架生成）
var express = require("express"); // （框架生成）
var path = require("path"); // 路径 （框架生成）
var cookieParser = require("cookie-parser"); // cookie （框架生成）
var logger = require("morgan"); // 日志 （框架生成）

var indexRouter = require("./routes/index"); //index 路由 （框架生成）
var usersRouter = require("./routes/users"); // users 路由 //（自行添加）
var usersApiRouter = require("./routes/UsersApi"); // 添加UserApi路由
var sassMiddleware = require("node-sass-middleware"); // （自行添加）
var app = express();

var Project_ManageRouter = require("./routes/ProjectManage"); // Project_Manage 路由 //（自行添加）
var Project_ManageApiRouter = require("./routes/ProjectManageApi"); // 添加Project_ManageApi路由
var projectProblemApiRouter = require("./routes/projectProblemApi");
// view engine setup
app.set("views", path.join(__dirname, "views")); // 设置视图根目录（框架生成）
app.set("view engine", "jade"); // 使用 pug 模板（框架生成）
app.use(logger("dev")); // （框架生成）
app.use(express.json()); // （框架生成）
app.use(express.urlencoded({ extended: false })); // （框架生成）
app.use(cookieParser()); // （框架生成）
app.use(
    sassMiddleware({
        // （自行添加）
        src: path.join(__dirname, "public"),
        dest: path.join(__dirname, "public"),
        indentedSyntax: true, // true = .sass and false = .scss
        sourceMap: true,
    })
);
app.use(express.static(path.join(__dirname, "public")));

// 解决请求跨越
app.all("/*", function (req, res, next) {
    // （自行添加）
    res.header("Access-Control-Allow-Origin", "*");
    res.header(
        "Access-Control-Allow-Headers",
        "Content-Type, Content-Length, Authorization, Accept, X-Requested-With"
    );
    res.header(
        "Access-Control-Allow-Methods",
        "PUT, POST, GET, DELETE, OPTIONS"
    );
    if (req.method == "OPTIONS") {
        res.sendStatus(200);
    } else {
        next();
    }
});

app.use("/", indexRouter); //（框架生成）
app.use("/users", usersRouter); // （手动添加）
app.use("/UsersApi", usersApiRouter); // （手动添加）

app.use("/ProjectManage", Project_ManageRouter); // （手动添加）
app.use("/ProjectManageApi", Project_ManageApiRouter); // （手动添加）
app.use("/projectProblemApi", projectProblemApiRouter);
// catch 404 and forward to error handler 自定义404中间件（框架生成）
app.use(function (req, res, next) {
    next(createError(404));
});

// error handler 自定义错误抛出中间件 （框架生成）
app.use(function (err, req, res, next) {
    // set locals, only providing error in development
    res.locals.message = err.message;
    res.locals.error = req.app.get("env") === "development" ? err : {};

    // render the error page
    res.status(err.status || 500);
    res.render("error");
});

module.exports = app;
